package com.example.democode01.kotlin

fun main() {
    // 主构造函数实例对象
    var car = Vehicle("轿车")
    car.intro()

    // 次构造函数实例对象 - 使用合理的轮子数量
    var bike = Vehicle("自行车", 2)
    bike.intro()
    
    // 展示次构造函数的灵活性 - 创建一个特殊车辆
    var specialVehicle = Vehicle("三轮车", 3)
    specialVehicle.intro()
}

/**
 * 主构造函数和次构造函数结合使用
 */
class Vehicle(val type: String) {  // 主构造函数，接收车辆类型参数
    var wheels: Int = 0  // 声明轮子数量属性，初始值为0
    
    // 初始化代码块，当创建对象时会执行
    // 根据车辆类型设置默认的轮子数量
    init {
        wheels = when(type){
            "轿车" -> 4   // 轿车默认4个轮子
            "自行车" -> 2  // 自行车默认2个轮子
            else -> 0      // 其他类型默认0个轮子
        }
    }

    // 次构造函数，接收车辆类型和轮子数量两个参数
    // 必须通过this()显式委托给主构造函数
    constructor(type: String, wheels: Int): this(type){
        // 在次构造函数中覆盖init块中设置的轮子数量
        this.wheels = wheels
    }

    // 展示车辆信息的方法
    fun intro(){
        println("我是: $type , 有 $wheels 个轮子")
    }
}